var urlCatalogoEnFlujo = "Catalogo_obtenerCatalogosEnFlujo.action";
var urlMovimientos = "Catalogo_obtenerMovimientos.action";
var urlActualizarEstado = "Catalogo_actualizarEstado.action";
var urlDetalleServidor = "Catalogo_obtenerDetalleServidor.action";
var urlDetalleBaseDatos = "Catalogo_obtenerDetalleBaseDatos.action";
var img_path = "resources/images";
var imgAbierto = img_path + "/abierto.png";
var imgTransicion = img_path + "/transicion.png";
var imgNovedad = img_path + "/novedad.png";
var imgImplementacion = img_path + "/implementacion.png";
var imgVirtualizacion = img_path + "/virtual.png";
var imgRecurso = img_path + "/recurso.png";
var imgAplicacion = img_path + "/app.png";
var imgCerrado = img_path + "/cerrado.png";
var imgActivo = img_path + "/activo.png";
var imgAprobar = img_path + "/check.png";
var estados = null;
var arEstados = [];

$(document).ready(function () {
    togglesFormulario("Formulario_LLenarDatos");

    $("#inicio").click();


    var servicios = [
        "Backend",
        "Backend IDC",
        "Balanceo de carga",
        "Canal nivel 2 (Lan to lan)",
        "Internet Data Center",
        "Internet punto central",
        "Intranet punto central",
        "Metro Ethernet",
        "MPLS avanzado",
        "Peering",
        "PL Ethernet",
        "Base de Datos",
        "WebLogic"

    ];

    var producto = [
        "TELMEX E-BUSINESS SERVICES 1",
        "TELMEX E-BUSINESS SERVICES 2",
        "TELMEX E-BUSINESS SERVICES 3",
        "TELMEX E-BUSINESS SERVICES 4",
        "TELMEX E-BUSINESS SERVICES 5"
    ];

    var servicio = [
        "SERVICIOS ESPECIALES DATACENTER 1",
        "SERVICIOS ESPECIALES DATACENTER 2",
        "SERVICIOS ESPECIALES DATACENTER 3",
        "SERVICIOS ESPECIALES DATACENTER 4",
        "SERVICIOS ESPECIALES DATACENTER 5"
    ];


    $("#aservicios").autocomplete({
        source: servicios,
        autoFill: true,
        mustMatch: true
    }).focus(function () {
            $(this).autocomplete("search", "");
        });

    $("#acategoria").autocomplete({
        source: producto,
        autoFill: true,
        mustMatch: true
    }).focus(function () {
            $(this).autocomplete("search", "");
        });

    $("#aproducto").autocomplete({
        source: producto,
        autoFill: true,
        mustMatch: true
    }).focus(function () {
            $(this).autocomplete("search", "");
        });

    $("#aservicio").autocomplete({
        source: servicio,
        autoFill: true,
        mustMatch: true
    }).focus(function () {
            $(this).autocomplete("search", "");
        });

    $("#aalias").autocomplete({
        source: servicios,
        autoFill: true,
        mustMatch: true
    }).focus(function () {
            $(this).autocomplete("search", "");
        });


    $("#enviarServicio2").click(function () {
        notifyNucleo("Servicio Agregado", 500, 5000);
        $("#Formulario_LLenarDatos").children('li').removeClass("enable").addClass("disable");
        $("#Formulario_LLenarDatos").find('input:text').val("");
        $("#fieldsetLlenarDatos").removeClass("enable").addClass("disable");
        $("#Formulario_Agregar_Servicio").find('input:text').val("");
        $("#Formulario_Agregar_Servicio").children('li').removeClass("enable").addClass("disable");
        $("#1").removeClass("disable").addClass("enable");
        $("#1").focus();
    });

    $("#aalias").keyup(function () {
        if (this.length > 2) {
            mostrarFieldset();
        }
    });

    $("#dirIp").keydown(function (event) {

        if (event.keyCode < 8 || (event.keyCode > 57 && event.keyCode <= 90) ||
            (event.keyCode > 105 && event.keyCode != 190 && event.keyCode != 110)) {
            return false;
        }
    });


    $("#enviarOrden").click(function () {
        $("#aprobar_flujo").empty();
        $("#detalle_orders").empty();
        $("#tituloDetalleOrden").addClass("oculto");
        $("#lineaOrder").addClass("oculto");
        obtenerCatalogosEnFlujoJSONData($("#codOrden").val());
    });

});


function obtenerCatalogosEnFlujoJSONData(codServicio) {
    var url = urlCatalogoEnFlujo;
    var OrdenOd = {};
    var param = {};
    var objetoJson = [];

    OrdenOd.codservicio = codServicio;

    objetoJson[0] = OrdenOd;

    param.objetoJson = JSON.stringify({"ordenes": objetoJson});
    sendServiceJSON(url, param, obtenerCatalogosEnFlujoSuccess, null, null);
}

function obtenerCatalogosEnFlujoSuccess(originalRequest) {
    //                   this is the json return data
    var result = originalRequest;

    if (result.codigo == "ERROR") {
        notify('La orden que ud. digito no existe. Por favor verifique el codigo.', 500, 5000, 'error');
    } else {
        estados = result.ordenes[0].estados;
        $.each(estados, function (pos, value) {
            arEstados[pos + 1] = value.nomestado;
        });
        var table = tablas("aprobar_flujo", "table_aprobar_flujo", result.tabla, result.ordenes, tdDinamico);

        table = table.dataTable({
            "bDestroy": true,
            "bJQueryUI": true,
            "bFilter": false,
            "bInfo": false,
            "bPaginate": false,
            "bSort": true,
            "iDisplayLength": 5,
            "aLengthMenu": [5, 10, 15, 20, 25, 100, "all"],
            "aoColumns": [
                { "sClass": "center" },
                { "sClass": "center"},
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" }
            ],
            "oLanguage": {
                "sZeroRecords": "No Hay Informaci&oacute;n",
                "sInfo": "",
                "sInfoEmpty": ""
            }
        });

        $("#tituloDetalleOrden").removeClass("oculto");
        $("#lineaOrder").removeClass("oculto");
        var tableOrdenes = tablas("detalle_orders", "table_detaller_orders", result.tablaOrdenes, result.ordenes[0].ordenDetalles, tdDinamicoTablaDetalle);

        tableOrdenes = tableOrdenes.dataTable({
            "bDestroy": true,
            "bJQueryUI": true,
            "bFilter": true,
            "bPaginate": true,
            "bSort": true,
            "iDisplayLength": 5,
            "aLengthMenu": [5, 10, 15, 20, 25, 100, "all"],
            "aoColumns": [
                { "sClass": "center" },
                { "sClass": "center"},
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" }
            ],
            "oLanguage": {
                "sZeroRecords": "No Hay Informaci&oacute;n",
                "sInfo": "",
                "sInfoEmpty": ""
            }
        });
    }

}

function status(status, accion) {

    if (!accion) {
        if (status == 1) {
            return " Por Instalar"
        } else if (status == 2) {
            return "Desmontado"
        } else if (status == 3) {
            return "infra"
        } else {
            return "Terminado";
        }
    } else {
        if (status == 1) {
            return " Instalado"
        } else if (status == 2) {
            return "Montado"
        } else if (status == 3) {
            return "App"
        } else {
            return "Listo";
        }
    }
}

function mostrarFieldset(elem) {
    if (elem.value.length > 4) {
        $("#fieldsetLlenarDatos").removeClass("disable");
        $("#fieldsetLlenarDatos").addClass("enable");
        $("#7").removeClass("disable");
        $("#7").addClass("enable");
    } else {
        $("#Formulario_LLenarDatos").children('li').removeClass("enable").addClass("disable");
        $("#fieldsetLlenarDatos").removeClass("enable").addClass("disable");
    }
}

function tdDinamico(td) {
    if (td.attr("id").indexOf("codestado") != -1) {

        var codEst = td.html();
        codEst += "_" + td.attr('id');
        var a = cambiarImagen(codEst);
        td.html('');
        td.append(a);

        $("#" + td.attr("id")).click(function () {
            var cod = $(this).children("a").attr("id");
            var codigo2 = cod.substr(0, cod.search('_'));
            cod = (codigo2 == 9 ? 1 : parseInt(codigo2) + 1);
            var codigoExtraido = cod;
            cod += "_" + $(this).attr('id');
            var link = cambiarImagen(cod);
            $(this).html('');
            $(this).append(link);
            var codigo = $(this).attr('id').substr($(this).attr('id').search("codestado") + 9, $(this).attr('id').length);
            codigo = parseInt(codigo) - 10;
            $('#estado' + codigo).html(arEstados[codigoExtraido]);
        });
    } else if (td.attr("id").indexOf("idor") != -1) {
        var idor = td.html();
        td.html("");
        var a = $(document.createElement('a')).appendTo(td);
        a.attr("id", idor);
        a.attr("href", "#");
        a.html(idor);
        $(a).click(function (event) {
            event.preventDefault();
            obtenerMovimientosJSONData($(this).attr("id"));
        });

    } else if (td.attr("id").indexOf("aprobar") != -1) {
        var a = crearElementoConImagen(imgAprobar, "a1_");
        td.html(a);
        $("#" + td.attr("id")).click(function () {
            var codigo = $(this).attr('id').substr($(this).attr('id').search("codestado") + 8, $(this).attr('id').length);
            codigo = parseInt(codigo) - 30;
            var idLink = $('#codestado' + codigo).children("a").attr("id");
            var idOrden = $('#idor00').children("a").attr("id");
            var codEstado = idLink.substr(0, idLink.search('_'));
            actualizarEstadoJSONData(idOrden, codEstado);
        });


    }

}

function tdDinamicoTablaDetalle(td) {
    if(td.attr("id").indexOf("idordet") != -1){
        var codOrDe = td.html();
        var a = $(document.createElement('a')).appendTo(td);
        a.attr('href', '#');
        a.attr('id', codOrDe + "_" + td.attr('id'));
        a.html(codOrDe);
        td.html('');
        td.append(a);
        $(a).click(function(event){
            event.preventDefault();
            var idTd = $(this).parent().attr("id");

            var codigo = idTd.substr(idTd.search("idordet") + 7, idTd.length);
            codigo = parseInt(codigo) + 60;

            var tipo = $("#grupo" + codigo).html();

            if(tipo=="RECURSOS TECNOLOGICOS"){
                obtenerDetalleServidorJSONData($(this).html());
            } else if(tipo=="BASES DE DATOS"){
                obtenerDetalleBaseDatosJSONData($(this).html());
            }

        });
    }
}

function obtenerMovimientosJSONData(idor) {
    var url = urlMovimientos;
    var OrdenOd = {};
    var param = {};
    var objetoJson = [];

    OrdenOd.idor = idor;

    objetoJson[0] = OrdenOd;

    param.objetoJson = JSON.stringify({"ordenes": objetoJson});
    sendServiceJSON(url, param, obtenerMovimientosSuccess, null, null);
}

function obtenerMovimientosSuccess(originalRequest) {
    //                   this is the json return data
    var result = originalRequest;

    //LEVANTAR POPPUP
    $("#title_poppupGenerico").html("Descripción Movimientos");
    $("#poppup_generico").fadeIn("slow");
    tabler = tablas("contenido_poppupGenerico", "table_movimiento", result.tabla, result.movimientos, null);
    tabler = tabler.dataTable({
        "bDestroy": true,
        "bJQueryUI": true,
        "bFilter": true,
        "bPaginate": true,
        "bSort": true,
        "iDisplayLength": 5,
        "aLengthMenu": [5, 10, 15, 20, 25, 100, "all"],
        "aoColumns": [
            { "sClass": "center" },
            { "sClass": "center"},
            {  "sClass": "center" },
            {  "sClass": "center" },
            {  "sClass": "center" },
            {  "sClass": "center" }
        ],
        "oLanguage": {
            "sZeroRecords": "No Hay Informaci&oacute;n",
            "sInfo": "",
            "sInfoEmpty": ""
        }
    });
}

function actualizarEstadoJSONData(idOrden, codEstado) {
    var url = urlActualizarEstado;
    var OrdenOd = {};
    var param = {};
    var objetoJson = [];

    OrdenOd.idor = idOrden;
    OrdenOd.codestado = codEstado;

    objetoJson[0] = OrdenOd;

    param.objetoJson = JSON.stringify({"ordenes": objetoJson});
    sendServiceJSON(url, param, actualizarEstadoSuccess, null, null);
}

function actualizarEstadoSuccess(originalRequest) {
    //                   this is the json return data
    var result = originalRequest;

    if(result.codigo == "OK"){
        notify('Estado guardado', 500, 5000);
    } else {
        notify('Hubo un error al actualizar el estado, por favor intentelo mas tarde.', 500, 5000, 'error');
    }

}

function obtenerDetalleServidorJSONData(idOrden) {
    var url = urlDetalleServidor;
    var OrdenDetalleOd = {};
    var param = {};
    var objetoJson = [];

    OrdenDetalleOd.idordet = idOrden;

    objetoJson[0] = OrdenDetalleOd;

    param.objetoJson = JSON.stringify({"ordendetalle": objetoJson});
    sendServiceJSON(url, param, obtenerDetalleServidorSuccess, null, null);
}

function obtenerDetalleServidorSuccess(originalRequest) {
    //                   this is the json return data
    var result = originalRequest;

    if (result.codigo == "ERROR") {
        notify('La orden que ud. digito no existe. Por favor verifique el codigo.', 500, 5000, 'error');
    } else {

        $("#title_poppupGenerico").html("Detalle del servidor");
        $("#poppup_generico").fadeIn("slow");
        $("#contenido_poppupGenerico").empty();
        var div = $(document.createElement('div')).appendTo("#contenido_poppupGenerico");
        div.attr("id","div_image_details");
        var img = $(document.createElement('img')).appendTo(div);
        img.attr("src", "resources/images/aplicaciones_infraestructura/servidor.jpg");
        var div = $(document.createElement('div')).appendTo("#contenido_poppupGenerico");
        div.attr("id","div_content_details");
        var tableOrdenes = tablaVertical("div_content_details", "table_DetalleServidor", result.tabla, result.servidores, null);
        tableOrdenes.addClass("TablasDetalle");
    }

}

function obtenerDetalleBaseDatosJSONData(idOrden) {
    var url = urlDetalleBaseDatos;
    var OrdenDetalleOd = {};
    var param = {};
    var objetoJson = [];

    OrdenDetalleOd.idordet = idOrden;

    objetoJson[0] = OrdenDetalleOd;

    param.objetoJson = JSON.stringify({"ordendetalle": objetoJson});
    sendServiceJSON(url, param, obtenerDetalleBaseDatosSuccess, null, null);
}

function obtenerDetalleBaseDatosSuccess(originalRequest) {
    //                   this is the json return data
    var result = originalRequest;

    if (result.codigo == "ERROR") {
        notify('La orden no existe. Por favor verifique el codigo.', 500, 5000, 'error');
    } else {

        $("#title_poppupGenerico").html("Detalle de Base de datos");
        $("#poppup_generico").fadeIn("slow");
        var tabler = tablas("contenido_poppupGenerico", "table_DetalleBaseDatos", result.tabla, result.basesdatos, null);
        tabler = tabler.dataTable({
            "bDestroy": true,
            "bJQueryUI": true,
            "bFilter": true,
            "bPaginate": true,
            "bSort": true,
            "iDisplayLength": 5,
            "aLengthMenu": [5, 10, 15, 20, 25, 100, "all"],
            "aoColumns": [
                { "sClass": "center" },
                { "sClass": "center"},
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" },
                {  "sClass": "center" }
            ],
            "oLanguage": {
                "sZeroRecords": "No Hay Informaci&oacute;n",
                "sInfo": "",
                "sInfoEmpty": ""
            }
        });
    }

}

function cambiarImagen(codigo) {
    var a = null;
    var codigo2 = codigo.substr(0, codigo.search('_'));
    switch (parseInt(codigo2)) {
        case 1:
            a = crearElementoConImagen(imgAbierto, codigo);
            break;
        case 2:
            a = crearElementoConImagen(imgTransicion, codigo);
            break;
        case 3:
            a = crearElementoConImagen(imgNovedad, codigo);
            break;
        case 4:
            a = crearElementoConImagen(imgImplementacion, codigo);
            break;
        case 5:
            a = crearElementoConImagen(imgVirtualizacion, codigo);
            break;
        case 6:
            a = crearElementoConImagen(imgRecurso, codigo);
            break;
        case 7:
            a = crearElementoConImagen(imgAplicacion, codigo);
            break;
        case 8:
            a = crearElementoConImagen(imgCerrado, codigo);
            break;
        case 9:
            a = crearElementoConImagen(imgActivo, codigo);
            break;
        default:
            break;
    }
    return a;
}

function crearElementoConImagen(rutaImagen, codigo) {
    var a = $(document.createElement('a'));
    a.attr('id', codigo);
    var img = $(document.createElement('img')).appendTo(a);
    img.attr("width", "24px");
    img.attr("style", "cursor: pointer");
    img.attr("src", rutaImagen);
    img.attr("class", "aprobar");
    return a;
}

function tablaVertical(idDiv,idTable,encabezado,contenidoTabla,funcionTd){


    var contenedor=$("#"+idDiv);
    contenedor.empty();
    var table= $(document.createElement('table')).appendTo(contenedor);
    table.attr("id",idTable);


    for(var i=0;i<encabezado.length;i++)
    {
        var tr= $(document.createElement('tr')).appendTo(table);
        var th= $(document.createElement('th')).appendTo(tr);
        var td=$(document.createElement('td')).appendTo(tr);
        th.html(encabezado[i]);
        td.html(contenidoTabla[0][encabezado[i].toLowerCase()+"$"+setnumero(i)]);
        td.attr("id",encabezado[i].toLowerCase()+i+0);
        if (funcionTd!=null){
            funcionTd(td);

        }
    }


    function setnumero(valor){
        var n;
        valor=valor+1;
        n = valor;
        if(valor<10){
            n="0"+valor;
        }

        return n;
    }
    return $('#'+idTable);

}

